﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Reflection;

/// <summary>
/// Summary description for ControladorEditarUnidaddeMedida

public class ControladorEditarUnidaddeMedida
{

    private static String dataMsg;
    private static String opMsg;
    private static String errorCode;

    public ControladorEditarUnidaddeMedida()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public String getDataMsg()
    {
        return dataMsg;
    }

    public String getOpMsg()
    {
        return opMsg;
    }

    public String getErrorCode()
    {
        return errorCode;
    }

    public void editarUnidaddeMedida(String nombreUnidaddeMedida, String idUnidaddeMedida, String oldName, HttpRequest req)
    {
        ModeloEditarUnidaddeMedida model = new ModeloEditarUnidaddeMedida();
        model.setModel(nombreUnidaddeMedida);
        
        int result = model.validarModelo();
        
        if (result == 0)
        {
            errorCode = "";
            dataMsg = "";
            opMsg = "El campo 'Nuevo nombre de la Unidad de Medida' es obligatorio";
            return;
        }
        if (result == -1)
        {
            errorCode = "";
            dataMsg = "";
            opMsg = "El campo 'Nuevo nombre de Unidad de Medida' tiene a lo más 40 caracteres";
            return;
        }
        if (result == -2)
        {
            errorCode = "";
            dataMsg = "";
            opMsg = "El nuevo nombre ingresado para la Unidad de Medida ya existe en la base de datos";
            return;
        }
        if (result == -3)
        {
            errorCode = "";
            dataMsg = "";
            opMsg = "Ocurrió un error al conectarse con la base de datos. Intente más tarde";
            return;
        }
        if (result == 1)
        {
            bool res = model.editarUnidaddeMedida(idUnidaddeMedida);
            if (res)
            {
                errorCode = "1";
                dataMsg = "";
                opMsg = "La Unidad de Medida '" + oldName + "' fue editada con éxito.\nSu nuevo nombre es: '" + nombreUnidaddeMedida + "'";
                // reflect to readonly property 
                PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);

                // make collection editable 
                isreadonly.SetValue(req.QueryString, false, null);

                // remove 
                req.QueryString.Remove("n");

                // modify 
                req.QueryString.Set("n", nombreUnidaddeMedida);

                // make collection readonly again 
                isreadonly.SetValue(req.QueryString, true, null);
                return;
            }
            else
            {
                errorCode = "";
                dataMsg = "";
                opMsg = "Ocurrió un error al conectarse con la base de datos. Intente más tarde";
                return;
            }
            
        }

    }

   
}